home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 3 / Amoszine 3.adf / MORE_SOURCE / F1Multi_Numbers.AMOS / F1Multi_Numbers.amosSourceCode
AMOS Source Code  |  1992-02-26  |  3KB  |  96 lines

  1. '
  2. ' Routine for Random Selection of Different Numbers  ( By Dave King )  
  3. '
  4. ' This routine can be used to pick each number from a given total once 
  5. ' e.g. If your enter 10 as your number a string called PICK$ is created  
  6. ' containing each number from 1 to 10. Here's how it works ........
  7. ' To handle any number from 1 - 999 PICK$ is created with preceding 0's
  8. ' in our example of 10 PICK$ will = "001002003004005006007008009010" 
  9. ' The Random Select routine picks a random number dependant on the 
  10. ' Length of PICK$ Divided by 3, then to ensure this number is not
  11. ' chosen again it is removed from PICK$
  12. '  
  13. ' Open a Hires Screen
  14. '
  15. Screen Open 0,640,250,16,Hires : Curs Off : Flash Off 
  16. BEGIN:
  17. '
  18. ' Set Paper colour to Black and clear screen, then hide the mouse  
  19. '
  20. Paper 0 : Cls : Hide On 
  21. '
  22. ' Request a number 
  23. '
  24. Locate 3,7 : Print "Enter a Number Between 2 and 638"
  25. Locate 3,10 : Input NUM$
  26. Cls 
  27. '
  28. ' Set Variable NUMENTRIES to equal The Number entered
  29. '  
  30. NUMENTRIES=Val(NUM$)
  31. '  
  32. ' Set random number seed 
  33. '
  34. Randomize Timer
  35. '
  36. ' Set GAP Variable - only used for spacing the text  
  37. '
  38. GAP=(Len(NUM$)*8)+5
  39. '
  40. ' Now create PICK$ - obviously the larger the number entered the longer
  41. ' it takes to create the string - with 638 the string is 1,914 Characters
  42. ' in length ( 638 Multiplied by 3 )    
  43. '
  44. CREATE_PICK_STRING:
  45. PICK$=""
  46. For X=1 To NUMENTRIES
  47.    XX$=Mid$(Str$(X),2)
  48.    '
  49.    ' Place preceding 0's if required
  50.    '
  51.    If Len(XX$)=1 Then XX$="00"+XX$
  52.    If Len(XX$)=2 Then XX$="0"+XX$
  53.    PICK$=PICK$+XX$
  54. Next X
  55. '
  56. ' Randomly Select from PICK$ 
  57. '
  58. RANDOM_SELECT_FROM_PICK_STRING:
  59. '
  60. ' Set XP and YP Variables - only used for positioning text   
  61. '
  62. XP=1 : YP=8
  63. Ink 2,0
  64. For X=1 To NUMENTRIES
  65.    XX=Rnd((Len(PICK$)/3)) : XX=XX-1
  66.    If XX=-1 Then XX=0
  67.    XX=(XX*3)+1
  68.    '  
  69.    ' The Variable SEL$ is returned with a different Number Each Pass
  70.    '
  71.    SEL$=Mid$(PICK$,XX,3)
  72.    '  
  73.    ' Now remove unwanted 0's from SEL$
  74.    '
  75.    If Left$(SEL$,2)="00" Then SEL$=Right$(SEL$,1)
  76.    If Left$(SEL$,1)="0" Then SEL$=Right$(SEL$,2)
  77.    '  
  78.    ' Display the randomly selected number 
  79.    '
  80.    Text XP,YP,SEL$
  81.    '
  82.    ' Set SP to equal the Start Position of selected number within PICK$ 
  83.    ' Set EP to equal SP+2 - End Position of selected number within PICK$  
  84.    '
  85.    SP=XX : EP=XX+2 : YP=YP+8
  86.    '  
  87.    ' Reduce PICK$ 
  88.    '
  89.    PICK$=Mid$(PICK$,1,SP-1)+Mid$(PICK$,EP+1,Len(PICK$))
  90.    If YP>232
  91.       XP=XP+GAP : YP=8
  92.    End If 
  93. Next X
  94. Ink 2,6 : Text 30,241," Bet you can't find a Duplicated Number ? - Press any Key to re-start. "
  95. Wait Key 
  96. Goto BEGIN